package com.vehiclemanagement.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 车辆事故记录实体类
 */
@Data
@TableName("accident_record")
public class AccidentRecord implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 事故记录ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 车辆ID
     */
    @TableField("vehicle_id")
    private Long vehicleId;

    /**
     * 驾驶员ID
     */
    @TableField("driver_id")
    private Long driverId;

    /**
     * 事故时间
     */
    @TableField("accident_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime accidentTime;

    /**
     * 事故地点
     */
    @TableField("accident_location")
    private String accidentLocation;

    /**
     * 事故描述
     */
    @TableField("accident_description")
    private String accidentDescription;

    /**
     * 事故类型：1-轻微事故，2-一般事故，3-重大事故
     */
    @TableField("accident_type")
    private Integer accidentType;

    /**
     * 责任认定：1-全责，2-主责，3-次责，4-无责
     */
    @TableField("responsibility")
    private Integer responsibility;

    /**
     * 人员伤亡情况
     */
    @TableField("casualties")
    private String casualties;

    /**
     * 车辆损坏情况
     */
    @TableField("vehicle_damage")
    private String vehicleDamage;

    /**
     * 维修费用
     */
    @TableField("repair_cost")
    private BigDecimal repairCost;

    /**
     * 赔偿费用
     */
    @TableField("compensation_cost")
    private BigDecimal compensationCost;

    /**
     * 保险理赔金额
     */
    @TableField("insurance_claim_amount")
    private BigDecimal insuranceClaimAmount;

    /**
     * 实际损失（维修费+赔偿费-保险理赔）
     */
    @TableField("actual_loss")
    private BigDecimal actualLoss;

    /**
     * 处理状态：0-未处理，1-处理中，2-已处理
     */
    @TableField("status")
    private Integer status;

    /**
     * 事故处理人
     */
    @TableField("handler")
    private String handler;

    /**
     * 处理时间
     */
    @TableField("handling_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime handlingTime;

    /**
     * 处理结果
     */
    @TableField("handling_result")
    private String handlingResult;

    /**
     * 备注
     */
    @TableField("remark")
    private String remark;

    /**
     * 创建时间
     */
    @TableField("create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    /**
     * 删除标志：0-未删除，1-已删除
     */
    @TableField("del_flag")
    @TableLogic
    private Integer delFlag;
    
    /**
     * 非数据库字段 - 车牌号
     */
    @TableField(exist = false)
    private String plateNumber;
    
    /**
     * 非数据库字段 - 驾驶员姓名
     */
    @TableField(exist = false)
    private String driverName;
} 